package com.class06.servlet;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.*;

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
// 注意：讲对象存储到文件中，需要实现Serializable接口
public class Person implements Serializable {
    private String name;
    private int age;
    private String address;
}


class Test {
    //    序列化 ： 对象 -> 字节数组
    @org.junit.jupiter.api.Test
    public void test() throws IOException {
        Person person = new Person("张三", 18, "北京");
//        1、 创建文件对象
        File file = new File("C:\\Users\\Administrator" +
                "\\Desktop\\test\\hello.txt");
        boolean newFile = file.createNewFile();
//        2、 创建文件输出流对象
        FileOutputStream fileOutputStream =
                new FileOutputStream(file);

        ObjectOutputStream objectOutputStream =
                new ObjectOutputStream(fileOutputStream);
//        3、 将对象写入到文件中
        objectOutputStream.writeObject(person);


    }
//    反序列化 ： 字节数组 -> 对象

    @org.junit.jupiter.api.Test
    public void test2() throws IOException, ClassNotFoundException {
//        1、 创建文件对象  文件绝对路径
        File file = new File("C:\\Users\\Administrator" +
                "\\Desktop\\test\\hello.txt");
//        2、 创建文件输入流对象
        FileInputStream fileInputStream = new FileInputStream(file);
//        3、 创建对象输入流对象
        ObjectInputStream objectInputStream =
                new ObjectInputStream(fileInputStream);
//        4、 读取文件中的对象
        Person person = (Person) objectInputStream.readObject();
//        5、 打印对象
        System.out.println(person);


    }
}
